package com.example.smalldimplestore.base;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.smalldimplestore.R;
import com.example.smalldimplestore.util.LogUtil;

import java.lang.ref.WeakReference;
import java.util.Stack;

import androidx.annotation.ColorInt;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.ColorUtils;
import androidx.fragment.app.FragmentActivity;

/**
 * Created by 86178 on 2019/11/24.
 * author mogen
 * 用心，成就一切。
 */


public class BaseActivity extends android.support.v4.app.FragmentActivity implements View.OnClickListener {

    public static final String SYSTEM_EXIT = "com.bhxcw.Android";
    private Stack<WeakReference<Activity>> mActivityStack;

    @SuppressLint("ResourceAsColor")
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //锁定竖屏
        setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


        //全屏
        //        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        //                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setStatusBar( R.color.white);
    }


    //标题栏返回调用方法
    public void setBack() {
        findViewById(R.id.topBarRelative).setVisibility(View.VISIBLE);
        findViewById(R.id.leftTitleText).setVisibility(View.GONE);
        findViewById(R.id.topBarRelative).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }


    //设置标题栏中心标题
    public void setTitleText(String str) {
        try {
            TextView text = findViewById(R.id.bar_title);
            text.setText(str);
        } catch (Exception e) {
            LogUtil.e("标题栏设置有误");
        }
    }

    //设置标题栏右侧字体（如果是文字）
    public void setRightText(String str) {
        TextView text = findViewById(R.id.rightText);
        text.setText(str);
        text.setOnClickListener(this);
    }

    //设置标题栏右侧字体颜色（如果是文字）
    public void setRightTextColor(int id) {
        TextView text = findViewById(R.id.rightText);
        text.setTextColor(this.getResources().getColor(id));
    }

    //设置标题栏右侧图片
    public void setRightImg(int id) {
        ImageView image = findViewById(R.id.rightImage);
        image.setImageResource(id);
        image.setOnClickListener(this);
    }

    //设置标题栏左侧字体（如果是文字）
    public void setLeftText(String str) {
        findViewById(R.id.topBarRelative).setVisibility(View.VISIBLE);
        findViewById(R.id.left_icon).setVisibility(View.GONE);
        TextView text = findViewById(R.id.leftTitleText);
        text.setText(str);
        text.setOnClickListener(this);
    }

    public void setTitleBg(int id) {
        RelativeLayout layout = findViewById(R.id.view_base_title_bar);
        layout.setBackgroundColor(id);
    }

    @Override
    public void onClick(View view) {

    }

    /**
     * 设置状态栏白底黑字
     */
    public void setNavWhiteColor() {
        //状态栏中的文字颜色和图标颜色，需要android系统6.0以上，而且目前只有一种可以修改（一种是深色，一种是浅色即白色）
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //修改为深色，因为我们把状态栏的背景色修改为主题色白色，默认的文字及图标颜色为白色，导致看不到了。
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        }
        //        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        //            Window window = getWindow();
        //            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        //            window.setStatusBarColor(ContextCompat.getColor(getApplicationContext(), R.color.black_six_one_half));
        //            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        //        }
    }

    /**
     * Android 6.0 以上设置状态栏颜色
     */
    protected void setStatusBar(@ColorInt int color) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            getWindow().addFlags( WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            getWindow().setStatusBarColor(color);
            if (isLightColor(color)) {
                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
            } else {
                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
            }
        }

    }

    /**
     * 判断颜色是不是亮色
     *
     * @param color
     * @return
     * @from https://stackoverflow.com/questions/24260853/check-if-color-is-dark-or-light-in-android
     */
    private boolean isLightColor(@ColorInt int color) {
        return ColorUtils.calculateLuminance(color) >= 0.5;
    }

    /**
     * 获取StatusBar颜色，默认白色
     *
     * @return
     */
    protected @ColorInt int getStatusBarColor() {
        return Color.WHITE;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

    }
}

